package com.zzw.springboot.consumer;

import com.rabbitmq.client.Channel;
import com.zzw.springboot.config.RabbitMQConfig;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * 消息消费者类
 */
@Component
public class MessageConsumer {

    /**
     * 监听指定队列处理消息
     * 
     * @param message 消息对象
     * @param channel 信道
     */
    // 暂时注释掉这个注解，让消息不被消费
    // @RabbitListener(queues = RabbitMQConfig.QUEUE_NAME)
    public void receiveMessage(Message message, Channel channel) throws IOException {
        long deliveryTag = message.getMessageProperties().getDeliveryTag();
        
        try {
            // 获取消息体
            byte[] body = message.getBody();
            String msg = new String(body);
            
            System.out.println("接收到消息: " + msg);
            
            // 处理业务逻辑...
            
            // 手动确认消息已处理
            channel.basicAck(deliveryTag, false);
        } catch (Exception e) {
            // 处理失败，拒绝消息
            // 参数说明：deliveryTag, multiple(是否批量操作), requeue(是否重新入队)
            channel.basicNack(deliveryTag, false, true);
        }
    }
} 